package br.com.estudosjsf.leilao.managedbean;

import java.io.Serializable;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.estudosjsf.leilao.domain.Marca;
import br.com.estudosjsf.leilao.domain.Modelo;
import br.com.estudosjsf.leilao.ejb.ModeloService;

@Named
@RequestScoped
public class ModeloBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@EJB
	private ModeloService modeloService;
	
	@Inject
	private Modelo modelo;
	
	private List<Modelo> listaModelos;
	private List<Marca> listaMarcas;
	
	public String preparaCadastroModelo(){
		listaMarcas = modeloService.listaMarcas();
		modelo = new Modelo();
		return "cadastrarModelo.xhtml";
	}
	
	public String cadastraModelo(){
		modeloService.salvaModelo(modelo);
		//adiciona mensagem de sucesso
		FacesMessage fm = new FacesMessage("Modelo cadastrado com sucesso! " + modelo.getNome());
		fm.setSeverity(FacesMessage.SEVERITY_INFO);
		FacesContext.getCurrentInstance().addMessage("form", fm);
		modelo = new Modelo();
		return null;
	}
	
	public String listaModelosParaAvaliacao(){
		listaModelos = modeloService.listaModelos();
		return "listarAvaliacoesPasso1.xhtml";
	}
	
	public String listaModelosParaAnuncio(){
		listaModelos = modeloService.listaModelos();
		return "cadastrarAnuncioPasso1.xhtml";
	}
	
	public Marca retornaMarcaPeloNome(String marcaSelecionada){
		for(Marca marca : listaMarcas){
			if(marca.getNome().equals(marcaSelecionada)){
				return marca;
			}
		}
		return null;
	}

	public Modelo getModelo() {
		return modelo;
	}

	public void setModelo(Modelo modelo) {
		this.modelo = modelo;
	}

	public List<Modelo> getListaModelos() {
		return listaModelos;
	}

	public void setListaModelos(List<Modelo> listaModelos) {
		this.listaModelos = listaModelos;
	}

	public List<Marca> getListaMarcas() {
		return listaMarcas;
	}

	public void setListaMarcas(List<Marca> listaMarcas) {
		this.listaMarcas = listaMarcas;
	}
}
